From e43fa4bfaa02746a0b28daa4c572d49b632f1c46 Mon Sep 17 00:00:00 2001 From: tsteven4 Date: Sun, 11 May 2014 15:06:33 +0000 Subject: [PATCH] fix schema violations in garmin training center writer. --- gpsbabel/gtrnctr.cc | 41 ++++++++++--------- .../reference/track/tcxtest~gpx-course.tcx | 2 +- .../reference/track/tcxtest~gpx-history.tcx | 3 +- 3 files changed, 25 insertions(+), 21 deletions(-) diff --git a/gpsbabel/gtrnctr.cc b/gpsbabel/gtrnctr.cc index 4cf5aeaa2..90bd8f22b 100644 --- a/gpsbabel/gtrnctr.cc +++ b/gpsbabel/gtrnctr.cc @@ -342,6 +342,10 @@ gtc_waypt_pr(const Waypoint* wpt) static void gtc_fake_hdr(void) { + /* handle the CourseLap_t or the ActivityLap_t types. */ + /* note that the elements must appear in the order required by the schema. */ + /* also note some of the elements are required. */ + long secs = 0; if (gtc_least_time.isValid() && gtc_most_time.isValid()) { secs = gtc_most_time.toTime_t() - gtc_least_time.toTime_t(); @@ -349,9 +353,22 @@ gtc_fake_hdr(void) /* write these in either case, course or activity format */ gtc_write_xml(0, "%d\n", secs); - if (tdata->distance_meters) { - gtc_write_xml(0, "%.2f\n", - tdata->distance_meters); + gtc_write_xml(0, "%.2f\n", tdata->distance_meters); + if (gtc_course_flag) { /* course format */ + gtc_write_xml(1, "\n"); + gtc_write_xml(0, "%lf\n", gtc_start_lat); + gtc_write_xml(0, "%lf\n", gtc_start_long); + gtc_write_xml(-1,"\n"); + gtc_write_xml(1, "\n"); + gtc_write_xml(0, "%lf\n", gtc_end_lat); + gtc_write_xml(0, "%lf\n", gtc_end_long); + gtc_write_xml(-1,"\n"); + + } else { /* activity (history) format */ + if (tdata->max_spd) { + gtc_write_xml(0, "%.3f\n", tdata->max_spd); + } + gtc_write_xml(0, "0\n"); /* element is required */ } if (tdata->avg_hrt) { gtc_write_xml(1, "\n"); @@ -363,26 +380,12 @@ gtc_fake_hdr(void) gtc_write_xml(0, "%d\n", (int)(tdata->max_hrt + 0.5)); gtc_write_xml(-1,"\n"); } + gtc_write_xml(0, "Active\n"); if (tdata->avg_cad) { gtc_write_xml(0, "%d\n", tdata->avg_cad); } - gtc_write_xml(0, "Active\n"); - if (gtc_course_flag) { /* course format */ - gtc_write_xml(1, "\n"); - gtc_write_xml(0, "%lf\n", gtc_start_lat); - gtc_write_xml(0, "%lf\n", gtc_start_long); - gtc_write_xml(-1,"\n"); - gtc_write_xml(1, "\n"); - gtc_write_xml(0, "%lf\n", gtc_end_lat); - gtc_write_xml(0, "%lf\n", gtc_end_long); - gtc_write_xml(-1,"\n"); - - } else { /* activity (history) format */ - if (tdata->max_spd) { - gtc_write_xml(0, "%.3f\n", tdata->max_spd); - } - //gtc_write_xml(0, "0\n"); + if (!gtc_course_flag) { /* activity (history) format */ gtc_write_xml(0, "Manual\n"); } diff --git a/gpsbabel/reference/track/tcxtest~gpx-course.tcx b/gpsbabel/reference/track/tcxtest~gpx-course.tcx index 1fe692250..991be3ca8 100644 --- a/gpsbabel/reference/track/tcxtest~gpx-course.tcx +++ b/gpsbabel/reference/track/tcxtest~gpx-course.tcx @@ -6,7 +6,6 @@ 6554 56826.54 - Active 34.173898 -118.758792 @@ -15,6 +14,7 @@ 34.155590 -118.757063 + Active diff --git a/gpsbabel/reference/track/tcxtest~gpx-history.tcx b/gpsbabel/reference/track/tcxtest~gpx-history.tcx index d1e44c9d1..d0e5c1468 100644 --- a/gpsbabel/reference/track/tcxtest~gpx-history.tcx +++ b/gpsbabel/reference/track/tcxtest~gpx-history.tcx @@ -6,8 +6,9 @@ 6554 56826.54 - Active 19.194 + 0 + Active Manual -- 2.30.2